"""
主程序入口
智能课后服务助手 - 交互式命令行界面
"""
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI

from agent import AfterSchoolServiceAgent

# 加载环境变量
load_dotenv()


def print_welcome():
    """打印欢迎信息"""
    print("=" * 60)
    print("🎓 智能课后服务助手")
    print("=" * 60)
    print("\n我可以帮助您：")
    print("  1. 📝 预定课后服务（如：我想预定作业辅导）")
    print("  2. ❌ 取消预定（如：取消预定 BK20240115ABC123）")
    print("  3. 🔍 查询您的预定（如：查询我的预定）")
    print("  4. 📋 查看所有预定（如：查看所有预定）")
    print("\n输入 'quit' 或 'exit' 退出程序")
    print("=" * 60)
    print()


def main():
    """主函数"""
    # 检查环境变量
    api_key = os.getenv("OPENAI_API_KEY")
    if not api_key or api_key == "your-api-key-here":
        print("⚠️  请先在 .env 文件中配置 OPENAI_API_KEY")
        print("   1. 复制 .env.example 为 .env")
        print("   2. 填入您的 OpenAI API Key")
        return
    
    # 初始化LLM
    llm = ChatOpenAI(
        model=os.getenv("MODEL_NAME", "gpt-3.5-turbo"),
        temperature=0.7,
        openai_api_key=api_key,
        openai_api_base=os.getenv("OPENAI_BASE_URL", "https://api.openai.com/v1")
    )
    
    # 创建Agent
    agent = AfterSchoolServiceAgent(llm)
    
    # 打印欢迎信息
    print_welcome()
    
    # 对话状态
    state = None
    
    # 主循环
    while True:
        try:
            # 获取用户输入
            user_input = input("您: ").strip()
            
            # 检查退出命令
            if user_input.lower() in ["quit", "exit", "退出", "再见"]:
                print("\n👋 再见！祝您生活愉快！")
                break
            
            # 跳过空输入
            if not user_input:
                continue
            
            # 处理输入
            response, state = agent.chat(user_input, state)
            
            # 显示响应
            print(f"\n助手: {response}\n")
            
            # 如果任务完成，重置状态
            if state.get("finished"):
                print("=" * 60)
                print("✨ 操作完成！如有其他需要，请继续输入。")
                print("=" * 60)
                print()
                state = None
        
        except KeyboardInterrupt:
            print("\n\n👋 再见！")
            break
        except Exception as e:
            print(f"\n❌ 发生错误: {e}")
            print("请重试或输入 'quit' 退出。\n")
            # 发生错误时重置状态
            state = None


if __name__ == "__main__":
    main()
